package com.crb.oauth2.api.wechat.cp.bean;

import com.crb.oauth2.api.wechat.cp.utils.JsonUtils;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.io.Serializable;

/**
 * 批量接口
 * @author huangjian
 */
@Data
@ToString
@EqualsAndHashCode
public class WxCpBatchActionRequest implements Serializable {
    private static final long serialVersionUID = -5028321625140879571L;
    /**
     *上传的csv文件的media_id
     */
    @SerializedName("media_id")
    private String mediaId;
    /**
     *是否邀请新建的成员使用企业微信（将通过微信服务通知或短信或邮件下发邀请，每天自动下发一次，最多持续3个工作日），默认值为true。
     */
    @SerializedName("to_invite")
    private Boolean toInvite;
    /**
     *回调信息。如填写该项则任务完成后，通过callback推送事件给企业。具体请参考应用回调模式中的相应选项
     */
    @SerializedName("callback")
    private Callback callback;

    public static WxCpBatchActionRequest fromJson(String json) {
        return JsonUtils.fromGsonJson(json, WxCpBatchActionRequest.class);
    }

    public String toJson() {
        return JsonUtils.toGsonJson(this);
    }

    @Data
    @ToString
    @EqualsAndHashCode
    public static class Callback {
        /**
         *企业应用接收企业微信推送请求的访问协议和地址，支持http或https协议
         */
        @SerializedName("url")
        private String url;
        /**
         *用于生成签名
         */
        @SerializedName("token")
        private String token;
        /**
         *用于消息体的加密，是AES密钥的Base64编码
         */
        @SerializedName("encodingaeskey")
        private String encodingaeskey;
    }
}
